package com.zhentao.controller;

import com.alibaba.excel.EasyExcel;
import com.zhentao.entity.order.ExcelExportUtil;
import com.zhentao.entity.order.OrderGoods;
import com.zhentao.service.GoodsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;

@RestController
@RequestMapping("goods")
public class GoodsController {
    @Autowired
    private GoodsService goodsService;

    @RequestMapping("selGoods")
    private List<OrderGoods> selGoods() {
        return goodsService.selOrderGoods();
    }

    @RequestMapping("export")
    public void exportOrderData(HttpServletResponse response) throws IOException {
        // 1. 从数据库查询数据（直接返回 OrderGoods 列表）
        List<OrderGoods> data = goodsService.selOrderGoods();

        // 2. 直接导出（使用 OrderGoods 作为 Excel 实体类）
        ExcelExportUtil.export(
                response,
                data,
                "订单数据_" + System.currentTimeMillis(),
                OrderGoods.class // 直接传入 OrderGoods.class
        );
    }

    @RequestMapping("exportLocal") // 接口路径：/order/export
    public String createExcelToD(HttpServletRequest request) {
        try {
            // 1. 从数据库查询数据（根据实际需求调整查询条件）
            // 2. 定义 D 盘文件路径（例如：D:/订单数据_20250801.xlsx）
            String filePath = "D:/订单数据_" + System.currentTimeMillis() + ".xlsx";

            // 3. 自动创建 D 盘文件夹（如果路径包含多级目录，如 D:/test/order/...）
            File file = new File(filePath);
            File parentDir = file.getParentFile();
            if (parentDir != null && !parentDir.exists()) {
                parentDir.mkdirs(); // 自动创建多级目录
            }

            // 4. 使用 EasyExcel 写入数据到 D 盘
            EasyExcel.write(filePath, OrderGoods.class)
                    .sheet("订单列表") // Excel 工作表名称
                    .doWrite(goodsService.selOrderGoods()); // 写入数据库查询的数据

            return "文件已成功创建到 D 盘，路径：" + filePath;

        } catch (Exception e) {
            e.printStackTrace();
            return "创建文件失败：" + e.getMessage();
        }
    }
}
